package cn.com.cifi.mars.service;

import cn.com.cifi.mars.bean.vo.price.PriceNewestVersion;
import cn.com.cifi.mars.bean.vo.price.PriceValueCompareVO;
import cn.com.cifi.mars.bean.vo.sys.rsp.SysNoticeVo;
import cn.com.cifi.mars.entity.SysNotice;
import cn.com.cifi.mars.entity.common.IdmUser;
import com.baomidou.mybatisplus.extension.service.IService;

import java.time.LocalDateTime;
import java.util.List;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author yyd
 * @since 2019-10-16
 */
public interface SysNoticeService extends IService<SysNotice> {

	/**
	 * 系统待办分页列表
	 */
	SysNoticeVo getSysNoticePage(String current,String pageSize);

	/***
	 * 手动调价
	 * @param noticeId 待办id
	 * @param idmUser 操作人
	 * @return PriceNewestVersion
	 */
	PriceNewestVersion updateManualPrice(String noticeId, IdmUser idmUser);

	/**
	 *  查询指定待办
	 * @param noticeId 待办id
	 * @return SysNotice
	 */
	SysNotice selectById(String noticeId);

	/**
	 * 根据分期id获取最新的待办id,为空表示不存在待办
	 * @param stagesId
	 * @return
	 */
	List<SysNotice> getNoticeId(String stagesId);

	/**
	 *  拉取昨天nos系统签约数据
	 */
	String syncNos();

	/**
	 * 查询分期下指定版本类型和指定状态的待办
	 * @param projectFid 分期id
	 * @param noticeType 待办类型
	 * @param versionType 版本类型
	 * @param noticeState 代办状态
	 * @param isDel 是否删除
	 * @return List
	 */
	List<SysNotice> selectModeByProjectFidAndVersionType(String projectFid, String noticeType, String versionType, String noticeState, int isDel);

	/***
	 * 分期下投资版本对比
	 * @param stagesId 分期id
	 * @return
	 */
	List<PriceValueCompareVO> panoCastDecisionVersionChange(String stagesId);

	/**
	 * 修改分期下指定类型的待办状态
	 * @param projectFid 分期id
	 * @param noticeType 代办类型
	 * @param noticeSource 代办来源
	 * @param noticeState 待办状态
	 * @param user 操作人
	 * @param now 时间
	 * @param isDel 是否删除
	 */
	void updateNoticeStateByStageIdAndType(String projectFid, String noticeType, String noticeSource, String noticeState, String user, LocalDateTime now, Integer isDel);

	/**
	 * 查询分期下待办
	 * @param projectFid 分期id
	 * @param noticeType 待办类型
	 * @param versionType 版本类型
	 * @param noticeState 待办状态
	 * @param isDel 是否删除
	 * @return List
	 */
	List<SysNotice> selectNoticeByProjectFidAndTaskType(String projectFid, List<String> noticeType, String versionType, String noticeState, int isDel);

	/**
	 *  查询分期下待办
	 * @param projectFid 分期id
	 * @param noticeType 待办类型
	 * @param versionType 版本类型
	 * @param noticeState 待办状态
	 * @param isDel 是否删除
	 * @return List
	 */
	List<SysNotice> selectNoticeByProcessMode(String projectFid, String noticeType, String versionType, String noticeState, int isDel);

	/**
	 * 查询全部代办为手动且未处理的代办信息
	 */
	List<SysNotice> selectNoticeByProcessingModeAndState();

	/**
	 * 查询货值代办补录门户代办
	 */
    void noticeCheckSupplementPortalTodo();
}
